<?php
namespace Mob \ Controller;

use Think \ Controller;
use Think \ Hook;

class TaskController extends BaseController {

    private $UserInfo;

	public function _initialize() {
		parent :: _initialize();
		$this->_top_menu_list = array (
			'left' => array (
				array (
					'type' => 'home',
					'href' => U('Mob/Task/index'
				)
			),
			array (
				'type' => 'message'
			),


		), 'center' => array (
			'title' => '任务'
		));
		if (is_login()) {
			if (check_auth('Weibo/Index/doSend')) {
				$this->_top_menu_list['right'][] = array (
					'type' => 'edit',
					'href' => U('Mob/Weibo/addWeibo'
				));
			} else {
				$this->_top_menu_list['right'][] = array (
					'type' => 'edit',
					'info' => '你没有发布任务权限！'
				);
			}
		} else {
			$this->_top_menu_list['right'][] = array (
				'type' => 'edit',
				'info' => '登录后才能操作！'
			);
		}
		//dump($this->_top_menu_list);exit;

		$this->UserInfo = query_user(array('nickname', 'avatar64', 'uid'), $v['uid']);
		$this->setMobTitle('任务');
		$this->assign('top_menu_list', $this->_top_menu_list);
	}

	/**
	 * 主页面显示
	 */
	public function index() {


		$this->display();

	}


	function taskMap() {

     $data['taskType'] = I('taskType');  //从请求中取tasktype信息
	 $data['releaseTime'] = I('releaseTime');//从请求中取发布时间
     $data['latitude'] = I('latitude',43.886841); //从请求中取纬度
     $data['longitude'] = I('longitude',125.3245);  //从请求中经度
     $data['count'] =I('count'); //条目数
     $data['Money'] = I('Money');  //从请求中取金额
     $data['taskSerialno']= I('taskSerialno'); //流水号
     $where=filter_array($data);

     $Model = D('Task');
     $result = $Model->TaskHall($data);

      foreach ($result as &$v)
      {
       $v['user'] = query_user(array('nickname', 'avatar128', 'avatar32','uid'), $v['releaseUserId']);
      }
     //print_r($result[0]['releaseUserId']);
      //  print_r(mssql_field_length(result));
       // print_r($result);
     $this->assign('tasklist',$result);
     $this->display();

	}
	/**
	 * 生成任务
	 */
	function addTask() {
        //先判断一下用户是否登录，避免提交出现问题。
		if (!is_login()) {
			$this->error('请登陆后再进行操作');
		}

		$auth = D('Task')->IsAuthTask(get_uid());

		if(!$auth)
		{
		$this->_top_menu_list['right'][] = array (
					'type' => 'edit',
					'info' => '你没有发布任务权限！'
				);
		}

		if (IS_POST) {

			//   taskContents
			//$aPage = I('post.page', 1, 'op_t');
			$uid = get_uid();
			$Serialno = I('post.Serialno');
			$TaskType = I('post.taskType',1);
			$TaskTitle = I('post.Title');
			$TaskContents = I('post.Contents');
			$TaskDesc = I('post.taskDesc', null);
			//	$IsFree='0';
			//	$Commission=80;
			//	$personnelnum=1;
			$tasklimit = I('post.limit');
			$latitude = I('post.latitude');
			$longitude = I('post.longitude');
			$Tasklongitude = I('post.Tasklongitude', null);
			$Tasklatitude = I('post.Tasklongitude', null);
			$personnelnum=I('post.personnelnum', 1);

			if (empty ($TaskContents)) {
				$this->error('发布内容不能为空。');
			}

			$task = D("Task");
			$taskid = $task->CreateTask($uid, $Serialno, $TaskType, $TaskTitle, $TaskContents, $TaskDesc, $personnelnum, $tasklimit, $latitude, $longitude, $Tasklongitude, $Tasklatitude);


           $this->redirect('mob/task/TaskPay',array('taskSerialno'=>$Serialno));
           // $this->redirect('mob/task/www',array('Serialno'=>$Serialno));

           /*
			if ($taskid) {
				$return['status'] = '1';
			} else {
				$return['status'] = ' 0';
				//   wirtelog(M()->getLastSql());
				$return['info'] = M()->getLastSql();

				//  $return['info'] = $uid;
			}
			$this->ajaxReturn($return);
            */
		} else {
			$Task['TaskSerialno'] = getTaskSerialno(); //先生成任务流水号

			$Task['Tasklimit'] = getDateTime();
			$this->assign('Task', $Task);
			$this->display();
		}

	}
	/**
	 * 支付任务
	 */
	public function taskpay() {
         //先判断一下用户是否登录，避免提交出现问题。
		if (!is_login()) {
			$this->error('请登陆后再进行操作');
		}

		if (IS_POST) {

			$Serialno = I('post.Serialno'); //取任务流水号
			$uid = get_uid(); //取任务ID
			$PayMode = I('post.PayMode'); //取支付模式
			$Money = I('post.Money'); //取提交过来的支付金额
			$Task = D("Task");  //实例化模型

			$Result = $Task->commissionSetting($Serialno, $uid, $PayMode, $Money);


			switch($Result)
			{
			 case 1:  //如果返回状态为1，则代操作成功
			 $Order = D("Orders");   //实例化模型
			 $OrderId=$Order->AcceptanceOrder($PayMode,$Money,$uid,$Serialno);  //调用受理订单

			 $return['status'] = '1';  //设置返回状态为成功
			 $return['OrderID']=$OrderId;  //设置生成的订单流水号

			//print_r(M()->getLastSql());
			// print_r($Serialno);
			 $this->redirect('Portal/PayMent/index',array('taskSerialno'=>$Serialno,'Money'=>$Money,'PayMode'=>$PayMode,'OrderID'=>$OrderId));
			 break;
			 ;
			 case 0:   //如果返回为0，则代表任务单号不存在。
			 $return['status'] = '0';
			 $return['info']='任务订单不存在!';
			 break;
			 ;
			 case  2:  //如果返回2，则代表任务状态异常
			 $return['status'] = '0';
			 $return['info']='任务状态异常!';
			 break;
			 default :  //默认归类为任务状态异常
			 $return['status'] = '0';
			 $return['info']='查询任务异常!';


          	}

			}
		else {


          $Serialno = I('get.taskSerialno'); //从get请求中取任务流水号信息
            $Uid = get_uid();   //取当前登录工号UID

           if($Serialno)  //判断一下传递流水号是否为空
           {
            $Task = D("task");  //实例化task模型
            $TaskInfo = $Task->QueryTask($Serialno);  //取任务信息
           if($TaskInfo)//判断任务信息是否存在
           {
           if($TaskInfo['taskStatus']==0&&$TaskInfo['taskStatus']==0)
           {
          // print_r($TaskInfo);
          $pay = D("Portal/Pay");  //实例化支付模型
          $PayMode = $pay->getPayModes();
            $this->assign('PayMode',$PayMode);  //
            $this->assign('Task', $TaskInfo);  //把任务信息传递到网页模板文件中
         //   print_r($PayMode);
            $this->display();//显示网页模板
           }

           }else  //如果任务信息不存在
           {
           	print_r("Task is not  find!");
           }
      ///taskdetail

           }
           else
           {
           print_r("Serialno is null");
           $this->display("Error/index");
           }
		}
	}

	public function MyTasks()
	{
	 if(IS_POST)  //先判断一下是否通过post方式提交过来的
	 {

	 }else
	 {
	 $Uid = get_uid();
	 $task = D('task')->myTasks($Uid);
	 $User = $this->UserInfo;
	 $this->assign('mytasks',$task);
	 $this->assign('User',$User);

	 $this->display();
	 }
	}
	public function TaskHall()
	{

	 $data['taskType'] = I('taskType');  //从请求中取tasktype信息
	 $data['releaseTime'] = I('releaseTime');//从请求中取发布时间
     $data['latitude'] = I('latitude',43.886841); //从请求中取纬度
     $data['longitude'] = I('longitude',125.3245);  //从请求中经度
     $data['count'] =I('count'); //条目数
     $data['Money'] = I('Money');  //从请求中取金额
     $data['taskSerialno']= I('taskSerialno'); //从请求中取金额
     $where=filter_array($data);

     $Model = D('Task');
     $result = $Model->TaskHall($data);

      foreach ($result as &$v)
      {
       $v['user'] = query_user(array('nickname', 'avatar64', 'uid'), $v['releaseUserId']);
      }

     $this->assign('tasklist',$result);
      $this->assign('tasklist',$result);
     $this->display();

	}
    public function TaskDetail()
    {
     $Serialno = I('taskSerialno');  //取任务流水号
     $Task = D('Task');  //实例化task模型
     $Task->AddTaskBrowse();  //创建任务
     $TaskDetail = $Task->getTaskDetail($Serialno);  //取任务详情
     $Accept = D('Accept');
     $TaskDetail['applyCount'] =$Accept->GetTaskapplyCount($Serialno); //取任务请求数
     $TaskDetail['User'] = query_user(array('nickname', 'avatar64', 'uid'), $TaskDetail['releaseUserId']);  //将用户信息内容拼到任务详情数组中
     $TaskDetail['DisplayMode'] = $Task->getDisplayMode($Serialno,get_uid());


    //  print_r($TaskDetail);
     $this->assign('TaskDetail',$TaskDetail);  //传递模板文件当中
     $this->display();

    }



    public function TaskApplication()
    {
      if (!is_login()) {
		 $data['status']=4;
         $data['msg']='error～';
		}
	else
	{

     $Serialno = I('Serialno');  //取传递流水号字段
     $Contents = I('AcceptContents');  //从提交过来的信息中取内容信息
     $Acceptlatitude = I('Acceptlatitude'); //从提交过来的信息中取
     $Acceptlongitude = I('Acceptlongitude');//从提交过来的信息中取
     $task = D('task');  //实例化模型
     $result = $task->IsAccep($Serialno);  //取受理结果
     $lock = $task->IsLook($Serialno);   //取任务是否已经锁定
     if($lock)
     {
      $data['status']=4;
      $data['msg']='任务已经锁定～';

     }else{
     switch($result)
     {
      case 1:  //已经被受理
      $data['status']=1;
      $data['msg']='任务已经被人抢走了～';
      break ;
      case 2:   //没有受理

      $accept = D('Accept');
      $res = $accept->IsAccept($Serialno,get_uid());
     if($res)
     {
     $data['status']=3;
     $data['msg']='任务已经申请过了，不能重复申请!';
     break;

     }


     $accept = D('Accept');
     $auth = $accept->IsAuthAccept(get_uid());
     if(!$auth)
     {
     $data['status']=0;
     $data['msg']='查询任务失败!';
     }else
     {
     $result = $accept->CreateAccept(get_uid(),$Serialno,$Contents,$Acceptlatitude,$Acceptlongitude);
      if($result)
      {
      $data['status']=2;
      $data['msg']='任务申请操作成功!';
      }
      else
      {
       $data['status']=0;
      $data['msg']='提交请求失败!';
      }

      break;
      }
     }
    }
	}
    $data = json_encode($data);
     print_r($data);
    }

   public function chooseAccept()
   {
   	 if(IS_POST)
   	 {
   	 $TaskSerialno = I('TaskSerialno'); //取任务流水号
   	 $Acceptid = I('AcceptSerialno');// 取受理流水号
     if(!$TaskSerialno||!$Acceptid)
     {
     $data['status']=0;
     $data['info']='传递参数异常!';
     }else
     {
     $task = D('Task');// 实例化模型
     $isAccept = $task->IsAccep($TaskSerialno); //先判断一下任务是否已经被受理了
     if($isAccept==2)  //判断一下任务是否没有受理
     {
     $result = $task->AcceptOperate($TaskSerialno,$Acceptid);  //执行受理操作
     if($result)  //判断一下是否执行成功
     {
     $accept = D('Accept');
     $res = $accept->AgreeAccept($TaskSerialno,$Acceptid);
     if($res)
     {
     $data['status']=1;
     $data['info']='选择成功!';
     }else
     {
     $data['status']=0;
     $data['info']='操作失败!';
     }

     }else
     {
     $data['status']=0;
     $data['info']='设置任务表状态失败!';
     }



     }elseif($isAccept==1) ///如果已经受理过了，则直接返回提示。
     {
     $data['status']=0;
     $data['info']='已经选择过了，不能重复选择!';
     }else  ///执行查询任务失败，
     {
     $data['status']=0;
     $data['info']='系统异常!';
     }
     }


     $data = json_encode($data);
     print_r($data);


   	 }else
   	 {
   	 $TaskSerialno = I('TaskSerialno'); //取任务流水号
    if(!$TaskSerialno)
    {
     print_r('TaskSerialno is not null!');
    }
    $Uid = get_uid();  //取当前用户ID
    $task = D('Task');
    $taskstatus = $task->checkStatus($TaskSerialno,1);

    if(!$taskstatus)
    {
    print_r('stauts  not is 1');
    }

    $taskinfo = $task->getTaskDetail($TaskSerialno);
  //  print_r(M()->getLastSql());
    if($taskinfo['releaseUserId']!=$Uid)
    {
     print_r('is not releaseUserId');
    }
    $accept = D('Accept');
    $acceptInfo = $accept->GetTaskAcceptDetail($TaskSerialno);
    if($acceptInfo)
    {
     foreach ($acceptInfo as &$v)
      {
       $v['user'] = query_user(array('nickname', 'avatar64', 'uid'), $v['AcceptUid']);
      }
    }

   $this->assign('TaskInfo',$taskinfo);
   $this->assign('AcceptInfo',$acceptInfo);

   $this->display();

   	 }
   }

   public function DispayProgress()
   {
    if(IS_POST)
   {

   }else
   {
   $Serialno = I('Serialno'); //取流水号
   $Task = D('Task');  //实例化模型
   $Taskinfo = $Task->getTaskDetail($Serialno);// 取任务信息
   if($Taskinfo['releaseUserId']!=get_uid())   //判断一下发布任务人员是否是当前人员。
   {
   	print_r('Not the task you created!');
   }
   }
   }

   public function test()
   {
   print_r(cache_get('username'));

   }







}



